package com.example.gitpart03;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ChapterParser {

    /**
     * 简单解析小说内容，按章节标题分割（支持“第X章” “第XX回”等简单格式）
     * @param bookContent 小说文本内容
     * @return 拆分后的章节列表，每个元素是“章节标题+内容”
     */
    public static List<String> parseChapters(String bookContent) {
        List<String> chapters = new ArrayList<>();
        if (TextUtils.isEmpty(bookContent)) {
            return chapters;
        }

        // 正则匹配章节标题，这里简单匹配“第X章” “第XX回”等，可根据实际小说格式调整
        Pattern pattern = Pattern.compile("(第[\\d一二三四五六七八九十]+[章回节])");
        Matcher matcher = pattern.matcher(bookContent);

        int startIndex = 0;
        while (matcher.find()) {
            int chapterStart = matcher.start();
            if (chapterStart > startIndex) {
                // 处理章节之间的内容（如果有的话，这里简单作为上一章节末尾，实际可按需调整）
                String prevContent = bookContent.substring(startIndex, chapterStart).trim();
                if (!prevContent.isEmpty()) {
                    // 这里可完善，比如补全到上一章节，或作为独立段落，示例直接拼接
                    if (!chapters.isEmpty()) {
                        chapters.set(chapters.size() - 1, chapters.get(chapters.size() - 1) + "\n" + prevContent);
                    }
                }
            }
            startIndex = chapterStart;
        }
        // 处理最后一部分内容
        if (startIndex < bookContent.length()) {
            String lastContent = bookContent.substring(startIndex).trim();
            if (!lastContent.isEmpty()) {
                if (!chapters.isEmpty()) {
                    chapters.set(chapters.size() - 1, chapters.get(chapters.size() - 1) + "\n" + lastContent);
                }
            }
        }

        // 重新分割，按标题精准拆分（更严谨的方式，上面逻辑可优化，这里换一种思路演示）
        chapters.clear();
        String[] parts = bookContent.split("(第[\\d一二三四五六七八九十]+[章回节])");
        for (int i = 1; i < parts.length; i += 2) {
            if (i + 1 < parts.length) {
                chapters.add(parts[i] + parts[i + 1]);
            }
        }
        return chapters;
    }
}